/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package sv.com.intesal.compra.managed;

import java.io.Serializable;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.ViewScoped;
import sv.com.intesal.clases.Mensaje;
import sv.com.intesal.compra.bean.Categoria;
import sv.com.intesal.compra.bean.Material;
import sv.com.intesal.compra.bean.SubCategoria;
import sv.com.intesal.compra.bean.Sucursal;
import sv.com.intesal.compra.controlador.CategoriaControlador;
import sv.com.intesal.compra.controlador.MaterialControlador;
import sv.com.intesal.compra.controlador.SubCategoriaControlador;
import sv.com.intesal.compra.controlador.SucursalControlador;
import sv.com.intesal.seguridad.managed.SessionManaged;

/**
 *
 * @author ejerez
 */
@ManagedBean(name = "consultaMaxMinManaged")
@ViewScoped
public class ConsultaMaxMinManaged implements Serializable {

    private SessionManaged sm;
    private Mensaje m;
    private Material selectedEncaMaximoMinimo;
    private Material selectedDetaMaximoMinimo;
    private List<Material> maximoMinimos;
    private List<Categoria> categorias;
    private List<SubCategoria> subCategorias;
    private List<Sucursal> sucursales;

    public ConsultaMaxMinManaged() {
        this.sm = new SessionManaged();
        this.m = new Mensaje();
        this.selectedEncaMaximoMinimo = new Material();
        this.selectedDetaMaximoMinimo = new Material();

        this.llenarCategoria_y_SubCategoria();
    }

    public void fillGrid() {

        try {
            if (sm.validar_rol_usuario("wfrmcon_MaximoMinimo", sm.buscar) == true) {

                MaterialControlador mc = new MaterialControlador();
                this.maximoMinimos = mc.getConsulta_MaximoMinimo(this.selectedEncaMaximoMinimo);
            }
        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    private void llenarCategoria_y_SubCategoria() {
        try {
            if (this.categorias == null) {
                CategoriaControlador cc = new CategoriaControlador();
                this.categorias = cc.fillComboBox();
            }

            if (this.subCategorias == null) {
                SubCategoriaControlador sc = new SubCategoriaControlador();
                this.subCategorias = sc.getSubCategorias_x_Categoria(this.categorias.get(0).getId_cat());
            }
            if (sucursales == null) {
                SucursalControlador sc = new SucursalControlador();
                this.sucursales = sc.getAllSucursales();
            }
        } catch (Exception e) {
            m.messageError(m.getIerror());
            e.printStackTrace();
        }
    }

    public void llenarSubCategorias() {
        try {
            SubCategoriaControlador sc = new SubCategoriaControlador();
            this.subCategorias = sc.getSubCategorias_x_Categoria(this.selectedEncaMaximoMinimo.getId_cat());
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }

    public void generarReporte() {
        try {
            if (this.maximoMinimos == null) {
                m.messageError("NO HAY REGISTROS EN LA BUSQUEDA");
            } else {
                if (sm.validar_rol_usuario("wfrmcon_MaximoMinimo", sm.reporte) == true) {
                    MaterialControlador mc = new MaterialControlador();
                    mc.generarReporte_MaximoMinimo(this.selectedEncaMaximoMinimo);
                }
            }
        } catch (Exception e) {
            m.message(m.getIerror());
            e.printStackTrace();
        }
    }

    /*SETTERS AND GETTERS*/
    public void flagVisible_Max() {
        try {
            this.selectedEncaMaximoMinimo.setFlag_maximo(true);
            this.selectedEncaMaximoMinimo.setFlag_minimo(false);
            this.selectedEncaMaximoMinimo.setFlag_negativo(false);

        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void flagVisible_Min() {
        try {
            this.selectedEncaMaximoMinimo.setFlag_maximo(false);
            this.selectedEncaMaximoMinimo.setFlag_minimo(true);
            this.selectedEncaMaximoMinimo.setFlag_negativo(false);

        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public void flagVisible_Negativo() {
        try {
            this.selectedEncaMaximoMinimo.setFlag_maximo(false);
            this.selectedEncaMaximoMinimo.setFlag_minimo(false);
            this.selectedEncaMaximoMinimo.setFlag_negativo(true);

        } catch (Exception e) {
            e.printStackTrace();
            m.messageError(m.getIerror());
        }
    }

    public List<Categoria> getCategorias() {
        return categorias;
    }

    public void setCategorias(List<Categoria> categorias) {
        this.categorias = categorias;
    }

    public List<Material> getMaximoMinimos() {
        return maximoMinimos;
    }

    public void setMaximoMinimos(List<Material> maximoMinimos) {
        this.maximoMinimos = maximoMinimos;
    }

    public Material getSelectedDetaMaximoMinimo() {
        return selectedDetaMaximoMinimo;
    }

    public void setSelectedDetaMaximoMinimo(Material selectedDetaMaximoMinimo) {
        this.selectedDetaMaximoMinimo = selectedDetaMaximoMinimo;
    }

    public Material getSelectedEncaMaximoMinimo() {
        return selectedEncaMaximoMinimo;
    }

    public void setSelectedEncaMaximoMinimo(Material selectedEncaMaximoMinimo) {
        this.selectedEncaMaximoMinimo = selectedEncaMaximoMinimo;
    }

    public List<SubCategoria> getSubCategorias() {
        return subCategorias;
    }

    public void setSubCategorias(List<SubCategoria> subCategorias) {
        this.subCategorias = subCategorias;
    }

    public List<Sucursal> getSucursales() {
        return sucursales;
    }

    public void setSucursales(List<Sucursal> sucursales) {
        this.sucursales = sucursales;
    }
}
